#pragma once
#include "..\Common\Global.h"

#include "..\Lexer\Lexer_Token.h"

#include "Parser_Input.h"

class CParser_Output : public CombinatorResult<CParser_Input,CParser_Output>
{
public:
	typedef NAutoPtr<CLexer_Token> CLexer_Token_Ptr;

	CParser_Output();
	CParser_Output(CParser_Input& _value,Combinator_MemoryManager<CParser_Input,CParser_Output>* _MM) : count(0),CombinatorResult<CParser_Input,CParser_Output>(_value,_MM){}
	CParser_Output(Combinator_MemoryManager<CParser_Input,CParser_Output>* _MM) : count(0),CombinatorResult<CParser_Input,CParser_Output>(_MM){}

	int& Count()
	{
		return count;
	}

	virtual CParser_Output& operator+(CParser_Output& _value);

protected:
	int count;
};